package leetcode.greedy;

/**
 * 
 * @author 26233
 * 给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易（即买入和卖出一支股票一次），设计一个算法来计算你所能获取的最大利润。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock

 */

public class LeetCode121_StockSale {
	
	// 记录最小值以及最小值位置后能获取的最大profit。最小值修改时，最大profit不一定修改
    public int maxProfit(int[] prices) {

    	if(prices == null || prices.length < 1)
    		return 0;
    	
    	int min = Integer.MAX_VALUE;
    	int maxProfit = 0;
    	
    	for(int i = 0; i < prices.length; i++) {
    		
    		if(prices[i] - min > maxProfit) {
    			maxProfit = prices[i] - min;
    		}
    		
    		if(prices[i] < min) {
    			min = prices[i];
    		}
    	}
    	
    	return maxProfit;
    }
    
    public static void main(String[] args) {
		
    	// int[] arr = new int[] {7,1,5,3,6,4};
    	int[] arr = new int[] {7,6,4,3,1};
    	System.out.println(new LeetCode121_StockSale().maxProfit(arr));
	}

}
